﻿using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
using NewsMvc.Models.Database;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;


public class HomeController : Controller
{



	//数据库
	private readonly NewsDbContext _db;
	//构造注入
	//在构造方法 获取对象
	public HomeController(NewsDbContext db)
	{
		_db = db;
	}
	//用依赖注入可以使控制器使用数据库_db


	[Route("/")] //应用的根路由
	[Route("/Index.html")]
	public IActionResult Index(int pageid = 0, int pageSize = 8)//pageid用来存页码
	{
		var articles = _db.Articles.OrderByDescending(x => x.ArticleId).ToList();
		var list = _db.Categories.ToList();
		int totalCount = articles.Count();//count用于获取集合或序列中元素的数量。它返回一个整数，表示集合中元素的个数。
		int totalPages = (int)Math.Ceiling((double)totalCount / pageSize);//Math.Ceiling()向上取整
		int skip = pageid * pageSize;
		articles = articles.Skip(skip).Take(pageSize).ToList();//skip跳过8页take获取8个页面
		ViewData["Articles"] = articles;
		ViewData["Categories"] = list;
		ViewBag.TotalPages = totalPages;
		return View();
	}


	[Route("/Detail.html")]
	public IActionResult Detail(int id = 1)// "id" 的可选参数，默认值为1
	{
		var article = _db.Articles.FirstOrDefault(e => e.ArticleId == id);//LINQ 查询，使用了 FirstOrDefault 方法从序列中返回第一个元素，如果序列为空，则返回默认值。根据给定条件 lambda 表达式来获取第一个匹配的文章对象。针对每个元素e，检查其ArticleId是否等于给定的id值，e是每个元素的变量。
		ViewData["Articles"] = article;
		ViewData["Categories"] = _db.Categories.ToList();
		return View();

	}


}







